package com.fatgirl.patterns.state.fusm
{

	/**
	 *  
	 * 模糊状态接口
	 * @author iceman
	 * 
	 */
	public interface IFuSMState
	{
		/**
		 * 获取状态类型ID 
		 * @return 返回类型ID
		 * 
		 */
		function getType():int;
		/**
		 *  进入状态调用
		 * 
		 */
		function enter():void;
		
		/**
		 * 状态更新调用 
		 * 
		 */
		function update():void;
		/**
		 * 离开状态调用
		 * 
		 */
		function exit():void;	
		
		/**
		 * 状态初始化 
		 * 
		 */
		function init():void;
		/**
		 * 确定状态模糊激活水平 
		 * @return 一个参考权值
		 * 
		 */
		function calculateActivation():Number;
		
		/**
		 * 获取父状态 
		 * @return 
		 * 
		 */
		function getParent():IFuSMState;
		/**
		 * 设置父状态 
		 * @param _parent
		 * 
		 */
		function setParent(_parent:IFuSMState):void;
		
		/**
		 * 检查下界 
		 * @param _lbound
		 * 
		 */
		function checkLowerBound(_lbound:Number = 0):void;
		/**
		 * 检查上界 
		 * @param _ubound
		 * 
		 */
		function checkUpperBound(_ubound:Number = 1):void;
		/**
		 * 检查全界 
		 * @param _lb 下界
		 * @param _ub 上界
		 * 
		 */
		function checkBounds(_lb:Number = 0,_ub:Number = 1):void;
		
		//----------------------------------------------------------------//
		
		/**
		 * 添加状态 
		 * @param _state 状态对象
		 * 
		 */
		function addItem(_state:IFuSMState):void;
		
		/**
		 * 重置状态 
		 * 
		 */
		function reset():void;
		
		/**
		 * 是否是活动状态 
		 * @param _state 状态
		 * @return 返回true或者false
		 * 
		 */
		function isActive(_state:IFuSMState):Boolean;
		
		/**
		 * 更新状态机 
		 * 
		 */
		function updateMachine():void;

	}
}